" ============================================================================
" FileName: ip.vim
" Author: voldikss <dyzplus@gmail.com>
" GitHub: https://github.com/voldikss
" ============================================================================

function! textobj#ip#() abort
  " pattern from https://github.com/deris/vim-textobj-ipmac/blob/master/plugin/textobj/ipmac.vim
  let pattern =
    \ '\%(\%(\%('
    \ .'[[:xdigit:]]\{1,4}\%(:[[:xdigit:]]\{1,4}\)\{5}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{4}\%(:[[:xdigit:]]\{1,4}\)\{1}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{3}\%(:[[:xdigit:]]\{1,4}\)\{1,2}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{2}\%(:[[:xdigit:]]\{1,4}\)\{1,3}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{1}\%(:[[:xdigit:]]\{1,4}\)\{1,4}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{1,5}'
    \ .'\|:\%(:[[:xdigit:]]\{1,4}\)\{1,5}'
    \ .'\|:'
    \ .'\):\%(25[0-5]\|2[0-4]\d\|1\d\{2}\|[1-9]\?\d\)\%(\.\%(25[0-5]\|2[0-4]\d\|1\d\{2}\|[1-9]\?\d\)\)\{3}'
    \ .'\|\%('
    \ .'[[:xdigit:]]\{1,4}\%(:[[:xdigit:]]\{1,4}\)\{7}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{6}\%(:[[:xdigit:]]\{1,4}\)\{1}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{5}\%(:[[:xdigit:]]\{1,4}\)\{1,2}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{4}\%(:[[:xdigit:]]\{1,4}\)\{1,3}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{3}\%(:[[:xdigit:]]\{1,4}\)\{1,4}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{2}\%(:[[:xdigit:]]\{1,4}\)\{1,5}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{1}\%(:[[:xdigit:]]\{1,4}\)\{1,6}'
    \ .'\|\%([[:xdigit:]]\{1,4}:\)\{1,7}:'
    \ .'\|:\%(:[[:xdigit:]]\{1,4}\)\{1,7}'
    \ .'\|::'
    \ .'\)'
    \ .'\)'
    \ .'\|\%(25[0-5]\|2[0-4]\d\|1\d\{2}\|[1-9]\?\d\)\%(\.\%(25[0-5]\|2[0-4]\d\|1\d\{2}\|[1-9]\?\d\)\)\{3}'
    \ .'\|[[:xdigit:]]\{2}\%(:[[:xdigit:]]\{2}\)\{5}'
    \ .'\)'
  call textobj#(pattern)
endfunction
